#ifndef __IIC_DRIVER_H__
#define __IIC_DRIVER_H__

#include <linux/module.h>
#include <linux/cdev.h>
#include <linux/device.h>

struct iic_dev{
    dev_t devid; /* 设备号 */
    struct cdev cdev; /* cdev */
    struct class *class; /* 类 */
    struct device *device; /* 设备 */
    int major; /* 主设备号 */
    int minor; /* 次设备号 */
    struct device_node *node;     /*设备节点*/
    unsigned int state; /*oled 开关状态*/
    void *private_data;

    // GT1151
    int irq_pin, rst_pin;
    int irq_num;
    struct input_dev *input;				/* input结构体 		*/
    // ---

#ifdef TIMER
    struct timer_list timer;     /* 定时器*/
    int period;
#endif
#ifdef ATOMIC
    atomic_t lock;     /* 原子变量*/
#endif
};


int iic_read_reg(struct iic_dev *dev, u8 reg);
void iic_write_reg(struct iic_dev *dev, u8 reg, u8 data);
int iic_regs_read(struct iic_dev *dev, u8 reg, void *val, int len);
s32 iic_regs_write(struct iic_dev *dev, u8 reg, u8 *buf, u8 len);
int iic_regs16_read(struct iic_dev *dev, u16 reg, void *val, int len);
s32 iic_regs16_write(struct iic_dev *dev, u16 reg, u8 *buf, u8 len);

#endif

